package com.wry.controller;

import com.wry.api.ApiService;
import org.apache.dubbo.config.annotation.DubboReference;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * <h1>  <h1>
 *
 * @author wry
 * @since 2023/5/9 14:42
 */
@RestController
public class ConsumerController {

    @DubboReference(
            registry = {"nacos","zookeeper"},// 可以选择多注册中心 Dubbo会先进行注册中心的负载均衡（轮询，随机等） ，选择哪个注册中心
            version = "1.0", // 指定调用v1.0的版本服务
            protocol = "dubbo", // 指定dubbo协议
            loadbalance = "consistenthash", // loadbalance:负载均衡算法 consistenthash：一致性hash算法
            cluster = "failover" // 集群容错 failover：表示是失败自动重试
            ,retries = 3 // 重试次数
    )
    private ApiService apiService;
    /*
    * 负载均衡算法
    * 1. 加权随机
    * 2. 加权轮询
    * 3. 一致性hash
    * 4. 最小活跃度（优先取性能高的）
    * 5. 最少调用时间
    *
    * 启动检查：
    * check = false 不会去进行检查注册中心种服务提供者是否注册成功
    * check = true（默认）
    * */

    @GetMapping("test")
    public String test(){
        return apiService.test("hello");
    }
}
